﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Xml.XPath;
using IbsysII.Domain;
using IbsysII.Util;
using IbsysII.Service;
using IbsysII;
using Microsoft.Win32;
using System.Collections.ObjectModel;
using System.Text.RegularExpressions;
using System.Data;
using System.Globalization;
using System.IO;
using System.Xml;
using System.Xml.Schema;
using Visiblox.Charts;
using iTextSharp.text;
using iTextSharp.text.pdf;
using System.Drawing;

//using iTextSharp.text;
//using iTextSharp.text.pdf;


namespace IbsysII
{
    /// <summary>
    /// Interaktionslogik für MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        enum DependentSeriesIdentifier { A = 0, B = 1, C = 2 };
        int i = 0;

        public static int mengeP10 = 0;
        public static int mengeP20 = 0;
        public static int mengeP30 = 0;

        public static int mengeP11 = 0;
        public static int mengeP21 = 0;
        public static int mengeP31 = 0;

        
        public void setAktPeriode(string wert)
        {
            this.Title = (string)FindResource("PeriodeTitel") +" "+ wert;
            App.aktPeriode = wert;
        }

        public void setTitle()
        {
            if (App.aktPeriode == null)
                this.Title = (string)FindResource("NoXml");
            else
            {
                this.Title = (string)FindResource("PeriodeTitel") + " "+ App.aktPeriode;
            }
        }



        public MainWindow()
        {
            InitializeComponent();
            
            foreach (MenuItem item in menuItemLanguages.Items)
            {
                if (item.Tag.ToString().Equals(CultureInfo.CurrentUICulture.Name))
                    item.IsChecked = true;
            }
            Zeitverwaltung.initDictionary();

            Speedometer.UserControl1 produktivitaet = new Speedometer.UserControl1(Convert.ToInt32(App.db.produktivitaet * 0.9));
            gridProdukt.Children.Add(produktivitaet);

            Speedometer.UserControl1 liefertreue = new Speedometer.UserControl1(Convert.ToInt32(App.db.liefertreue * 0.9));
            gridLiefertr.Children.Add(liefertreue);

            Speedometer.UserControl1 auslastung = new Speedometer.UserControl1(Convert.ToInt32(App.db.umsatzrendite * 0.9));
            gridAuslastung.Children.Add(auslastung);

            // App.cu.loadUmsatzChart(chartUmsatz);

            
            setTitle();
            //StackedColumnSeries stack = new StackedColumnSeries();


            //ColumnSeries scs = new ColumnSeries();
            //ColumnSeries scs2 = new ColumnSeries();

            //DataSeries<string, double> ds = new DataSeries<string,double>();
            //DataPoint<string, double> dp = new DataPoint<string, double>();
            //dp.X = "Test";
            //dp.Y = 50;
            //DataPoint<string, double> dp3 = new DataPoint<string, double>();
            //dp3.X = "Test2";
            //dp3.Y = 100;
            //ds.Add(dp);
            //ds.Add(dp3);

            //DataSeries<string, double> ds2 = new DataSeries<string, double>();
            //DataPoint<string, double> dp2 = new DataPoint<string, double>();
            //DataPoint<string, double> dp4 = new DataPoint<string, double>();
            //dp4.X = "Test2";
            //dp4.Y = 100;
            //dp2.X = "Test";
            //dp2.Y = 50;

            //ds2.Add(dp);
            //ds2.Add(dp4);
            

            //scs.DataSeries =ds;
            //scs2.DataSeries = ds2;

            //stack.Series.Add(scs);
            //stack.Series.Add(scs2);
            //chartUmsatz.Series.Add(stack);
        }



        private void btnVerkaufsauftraege(object sender, RoutedEventArgs e)
        {
            App.lstProgP1.Clear();
            App.lstProgP2.Clear();
            App.lstProgP3.Clear();
            App.vertrieb.Clear();
            App.direktVertrieb.Clear();

            Zeitverwaltung.dicZeitverwaltung.Clear();
            Zeitverwaltung.initDictionary();

            int teilNrP1 = 1;
            int teilNrP2 = 2;
            int teilNrP3 = 3;
            bool allesRichtig = true;
            int mengeP1direkt = 0;
            int mengeP2direkt = 0;
            int mengeP3direkt = 0;

            double preisP1direkt = 0;
            double preisP2direkt = 0;
            double preisP3direkt = 0;

            double koventP1direkt = 0;
            double koventP2direkt = 0;
            double koventP3direkt = 0;


            

            int mengeP12=0;
            int mengeP22=0;
            int mengeP32=0;

            int mengeP13=0;
            int mengeP23=0;
            int mengeP33=0;
            try
            {
                mengeP10 = Convert.ToInt32(textBox1.Text);
                if (mengeP10 < 0)
                    throw new NegativeException();
                mengeP20 = Convert.ToInt32(textBox5.Text);
                if (mengeP20 < 0)
                    throw new NegativeException();
                mengeP30 = Convert.ToInt32(textBox9.Text);
                if (mengeP30 < 0)
                    throw new NegativeException();


                mengeP11 = Convert.ToInt32(textBox2.Text);
                if (mengeP11 < 0)
                    throw new NegativeException();
                mengeP21 = Convert.ToInt32(textBox6.Text);
                if (mengeP21 < 0)
                    throw new NegativeException();
                mengeP31 = Convert.ToInt32(textBox10.Text);
                if (mengeP31 < 0)
                    throw new NegativeException();

                mengeP12 = Convert.ToInt32(textBox3.Text);
                if (mengeP12 < 0)
                    throw new NegativeException();
                mengeP22 = Convert.ToInt32(textBox7.Text);
                if (mengeP22 < 0)
                    throw new NegativeException();
                mengeP32 = Convert.ToInt32(textBox11.Text);
                if (mengeP32 < 0)
                    throw new NegativeException();

                mengeP13 = Convert.ToInt32(textBox4.Text);
                if (mengeP13 < 0)
                    throw new NegativeException();
                mengeP23 = Convert.ToInt32(textBox8.Text);
                if (mengeP23 < 0)
                    throw new NegativeException();
                mengeP33 = Convert.ToInt32(textBox12.Text);
                if (mengeP33 < 0)
                    throw new NegativeException();
                mengeP1direkt = Convert.ToInt32(textBox13.Text);
                if (mengeP1direkt < 0)
                    throw new NegativeException();
                mengeP2direkt = Convert.ToInt32(textBox14.Text);
                if (mengeP2direkt < 0)
                    throw new NegativeException();
                mengeP3direkt = Convert.ToInt32(textBox15.Text);
                if (mengeP3direkt < 0)
                    throw new NegativeException();
                preisP1direkt = Convert.ToDouble(textBox16.Text);
                if (preisP1direkt < 0)
                    throw new NegativeException();
                preisP2direkt = Convert.ToDouble(textBox17.Text);
                if (preisP2direkt < 0)
                    throw new NegativeException();
                preisP3direkt = Convert.ToDouble(textBox18.Text);
                if (preisP3direkt < 0)
                    throw new NegativeException();
                koventP1direkt = Convert.ToDouble(textBox19.Text);
                if (koventP1direkt < 0)
                    throw new NegativeException();
                koventP2direkt = Convert.ToDouble(textBox20.Text);
                if (koventP2direkt < 0)
                    throw new NegativeException();
                koventP3direkt = Convert.ToDouble(textBox21.Text);
                if (koventP3direkt < 0)
                    throw new NegativeException();
                if (mengeP10 + mengeP20 + mengeP30 + mengeP1direkt + mengeP2direkt + mengeP3direkt >= 870)
                    throw new ToManyPartsException();
            }
            catch (FormatException exception)
            {
                MessageBox.Show(FindResource("FormatException").ToString(), FindResource("Fehler").ToString(), MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK);
                allesRichtig = false;
            }
            catch (ToManyPartsException exception)
            {
                MessageBox.Show(FindResource("ToManyPartsException").ToString(), FindResource("Fehler").ToString(), MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK);
                allesRichtig = false;
            }
            catch (NegativeException exception)
            {
                MessageBox.Show(FindResource("NegativeException").ToString(), FindResource("Fehler").ToString(), MessageBoxButton.OK, MessageBoxImage.Information, MessageBoxResult.OK);
                allesRichtig = false;
            }

            var vkP1 = (from teil in App.lstTeileP1 where teil.TeilNr == teilNrP1 select teil);
            var vkP2 = (from teil in App.lstTeileP2 where teil.TeilNr == teilNrP2 select teil);
            var vkP3 = (from teil in App.lstTeileP3 where teil.TeilNr == teilNrP3 select teil);
            List<Teil> test = App.lstTeileP3;

            if (allesRichtig)
            {
                foreach (Teil t in vkP1)
                {
                    t.Bedarf = mengeP10;
                    t.BedarfN1 = mengeP11;
                    t.BedarfN2 = mengeP12;
                    t.BedarfN3 = mengeP13;
                    App.vertrieb.Add(t.CreateDeepCopy(t));
                    if (cmbDirektVerkPeriode.SelectedItem.ToString() == "P" + App.aktPeriode)
                    {
                        Teil t1 = t.CreateDeepCopy(t);
                        //t1.Bedarf = t.Bedarf + mengeP1direkt;
                        t1.MengeDirekt = mengeP1direkt;
                        t1.PreisDirekt = preisP1direkt;
                        t1.KoventDirekt = koventP1direkt;
                        App.direktVertrieb.Add(t1);
                        t.Bedarf = t.Bedarf + mengeP1direkt;
                    }
                    if (cmbDirektVerkPeriode.SelectedItem.ToString() == "P" + App.aktPeriode + 1)
                    {

                        t.BedarfN1 = t.BedarfN1 + mengeP1direkt;
                    }
                    if (cmbDirektVerkPeriode.SelectedItem.ToString() == "P" + App.aktPeriode + 2)
                    {

                        t.BedarfN2 = t.BedarfN2 + mengeP1direkt;
                    }
                    if (cmbDirektVerkPeriode.SelectedItem.ToString() == "P" + App.aktPeriode + 3)
                    {

                        t.BedarfN3 = t.BedarfN3 + mengeP1direkt;
                    }
                    App.lstProgP1 = Materialverwaltung.berechneProdMenge(t);
                   
                    foreach (Produktionsauftrag pAuf in App.lstProgP1)
                    {
                        if (pAuf.Teil.TeilNr == 1)
                        {
                            Produktionsauftrag prod2 = new Produktionsauftrag();
                            prod2.Teil = pAuf.Teil.CreateDeepCopy(pAuf.Teil);
                            if (cmbDirektVerkPeriode.SelectedItem.ToString() == "P" + App.aktPeriode)
                                 prod2.Teil.Bedarf = mengeP10 + mengeP1direkt - pAuf.Teil.Lagermenge;                           
                            if (prod2.Teil.Bedarf < 0)
                                prod2.Teil.Bedarf = 0;
                            prod2.Prio = 6;
                            App.lstProgP1.Add(prod2);
                            pAuf.Teil.Bedarf = pAuf.Teil.Bedarf - prod2.Teil.Bedarf;
                            break;
                        }
                    }
                    //App.lstProgP1.AddRange(Materialverwaltung.berechneProdMengeN1(t));
                    //App.lstProgP1.AddRange(Materialverwaltung.berechneProdMengeN2(t));
                    //App.lstProgP1.AddRange(Materialverwaltung.berechneProdMengeN3(t));
                }

                foreach (Teil t in vkP2)
                {
                    t.Bedarf = mengeP20;
                    t.BedarfN1 = mengeP21;
                    t.BedarfN2 = mengeP22;
                    t.BedarfN3 = mengeP23;
                    App.vertrieb.Add(t.CreateDeepCopy(t));
                    if (cmbDirektVerkPeriode.SelectedItem.ToString() == "P" + App.aktPeriode)
                    {
                        Teil t1 = t.CreateDeepCopy(t);
                        //t1.Bedarf = t.Bedarf + mengeP2direkt;
                        t1.MengeDirekt = mengeP2direkt;
                        t1.PreisDirekt = preisP2direkt;
                        t1.KoventDirekt = koventP2direkt;
                        App.direktVertrieb.Add(t1);
                        t.Bedarf = t.Bedarf + mengeP2direkt;
                    }
                    if (cmbDirektVerkPeriode.SelectedItem.ToString() == "P" + App.aktPeriode + 1)
                    {

                        t.BedarfN1 = t.BedarfN1 + mengeP2direkt;
                    }
                    if (cmbDirektVerkPeriode.SelectedItem.ToString() == "P" + App.aktPeriode + 2)
                    {

                        t.BedarfN2 = t.BedarfN2 + mengeP2direkt;
                    }
                    if (cmbDirektVerkPeriode.SelectedItem.ToString() == "P" + App.aktPeriode + 3)
                    {

                        t.BedarfN3 = t.BedarfN3 + mengeP2direkt;
                    }
                    App.lstProgP2 = Materialverwaltung.berechneProdMenge(t);
                    foreach (Produktionsauftrag pAuf in App.lstProgP2)
                    {
                        if (pAuf.Teil.TeilNr == 2)
                        {
                            Produktionsauftrag prod2 = new Produktionsauftrag();
                            prod2.Teil = pAuf.Teil.CreateDeepCopy(pAuf.Teil);
                            if (cmbDirektVerkPeriode.SelectedItem.ToString() == "P" + App.aktPeriode)
                                prod2.Teil.Bedarf = mengeP20 + mengeP2direkt - pAuf.Teil.Lagermenge;
                            if (prod2.Teil.Bedarf < 0)
                                prod2.Teil.Bedarf = 0;
                            prod2.Prio = 6;
                            App.lstProgP1.Add(prod2);
                            pAuf.Teil.Bedarf = pAuf.Teil.Bedarf - prod2.Teil.Bedarf;
                            break;
                        }
                    }
                    //App.lstProgP2.AddRange(Materialverwaltung.berechneProdMengeN1(t));
                    //App.lstProgP2.AddRange(Materialverwaltung.berechneProdMengeN2(t));
                    //App.lstProgP2.AddRange(Materialverwaltung.berechneProdMengeN3(t));

                }

                foreach (Teil t in vkP3)
                {
                    t.Bedarf = mengeP30;
                    t.BedarfN1 = mengeP31;
                    t.BedarfN2 = mengeP32;
                    t.BedarfN3 = mengeP33;
                    App.vertrieb.Add(t.CreateDeepCopy(t));
                    if (cmbDirektVerkPeriode.SelectedItem.ToString() == "P" + App.aktPeriode)
                    {
                        Teil t1 = t.CreateDeepCopy(t);
                        //t1.Bedarf = t.Bedarf + mengeP3direkt;
                        t1.MengeDirekt = mengeP3direkt;
                        t1.PreisDirekt = preisP3direkt;
                        t1.KoventDirekt = koventP3direkt;
                        App.direktVertrieb.Add(t1);
                        t.Bedarf = t.Bedarf + mengeP3direkt;
                    }
                    if (cmbDirektVerkPeriode.SelectedItem.ToString() == "P" + App.aktPeriode + 1)
                    {

                        t.BedarfN1 = t.BedarfN1 + mengeP3direkt;
                    }
                    if (cmbDirektVerkPeriode.SelectedItem.ToString() == "P" + App.aktPeriode + 2)
                    {

                        t.BedarfN2 = t.BedarfN2 + mengeP3direkt;
                    }
                    if (cmbDirektVerkPeriode.SelectedItem.ToString() == "P" + App.aktPeriode + 3)
                    {

                        t.BedarfN3 = t.BedarfN3 + mengeP3direkt;
                    } 
                    App.lstProgP3 = Materialverwaltung.berechneProdMenge(t);
                    foreach (Produktionsauftrag pAuf in App.lstProgP3)
                    {
                        if (pAuf.Teil.TeilNr == 3)
                        {
                            Produktionsauftrag prod2 = new Produktionsauftrag();
                            prod2.Teil = pAuf.Teil.CreateDeepCopy(pAuf.Teil);
                            if (cmbDirektVerkPeriode.SelectedItem.ToString() == "P" + App.aktPeriode)
                                prod2.Teil.Bedarf = mengeP30 + mengeP3direkt - pAuf.Teil.Lagermenge;
                            if (prod2.Teil.Bedarf < 0)
                                prod2.Teil.Bedarf = 0;
                            prod2.Prio = 6;
                            App.lstProgP1.Add(prod2);
                            pAuf.Teil.Bedarf = pAuf.Teil.Bedarf - prod2.Teil.Bedarf;
                            break;
                        }
                    }
                    //App.lstProgP3.AddRange(Materialverwaltung.berechneProdMengeN1(t));
                    //App.lstProgP3.AddRange(Materialverwaltung.berechneProdMengeN2(t));
                    //App.lstProgP3.AddRange(Materialverwaltung.berechneProdMengeN3(t));

                }
                foreach (Produktionsauftrag p in App.lstProgP1)
                {
                    if (p.Teil.Teileart.CompareTo('P') == 0 || p.Teil.Teileart.CompareTo('E') == 0)
                        Console.WriteLine(p.Teil.TeilNr + " " + p.Teil.Bedarf);
                }

                App.lstBestellungen = Bestellverwaltung.setBestellung();

                Zeitverwaltung.berechneZeiten(App.lstProgP1);
                Zeitverwaltung.berechneZeiten(App.lstProgP2);
                Zeitverwaltung.berechneZeiten(App.lstProgP3);
                Zeitverwaltung.gesamtZeit();
                Zeitverwaltung.finaleZeitberechnung();
                dtGridZeit.ItemsSource = Zeitverwaltung.dicZeitverwaltung.Values;
                tabBest.IsEnabled = true;
                tabProd.IsEnabled = true;
                tabDash.IsEnabled = true;
            }


            DateTime today = DateTime.Now;
            lblReportDatum.Content = today.ToString("yyyy-MM-dd");
            lblReportSeite.Content = "Seite 1/1";
            lblReportErsteller.Content = Environment.UserName;
            lblReportDatum.Visibility = System.Windows.Visibility.Hidden;
            lblReportSeite.Visibility = System.Windows.Visibility.Hidden;
            lblReportErsteller.Visibility = System.Windows.Visibility.Hidden;
        }
      
        private void xmlEinlesen_Click(object sender, System.EventArgs e)
        {
            // Displays an OpenFileDialog so the user can select a Cursor.
            OpenFileDialog openFileDialog1 = new OpenFileDialog();
            openFileDialog1.Filter = "XML|*.xml";
            openFileDialog1.Title = FindResource("XmlInp").ToString();
            // Datei ausgewaehlt
            if ((bool) openFileDialog1.ShowDialog())
            {
                if (OutputXml.validate(@openFileDialog1.FileName))
                {
                    //ersetze aktuelle inputdatei mit der gerade ausgewaehlten
                    try
                    {
                        string projectPath = Environment.CurrentDirectory;
                        //Für Setup auskoomentieren
                        for (int i = 0; i < 2; i++)
                        {
                            projectPath = System.IO.Path.GetDirectoryName(projectPath);
                        }
                        projectPath = projectPath + @"\Daten\P4result.xml";
                        File.Copy(openFileDialog1.FileName, projectPath, true);
                        App.reloadXMLInput();
                        MessageBox.Show(FindResource("XMLSuccess").ToString(), FindResource("XMLSuccessHeader").ToString(), MessageBoxButton.OK, MessageBoxImage.Information);
                        btnVerkaufsAuftr.IsEnabled = true;
                        btnVerkaufsAuftr.ToolTip = null;
                        //Hier
                        repExport.IsEnabled = true;
                        xmlExport.IsEnabled = true;
                        setAktPeriode(Xpath_Zugriff.getPeriod());

                        //App.cu.loadUmsatzChart(chartUmsatz);
                        cmbDirektVerkPeriode.IsEnabled = true;
                        int maxPer = Convert.ToInt32(App.aktPeriode) + 3;
                        for (int i = Convert.ToInt32(App.aktPeriode); i <= maxPer; i++)
                        {
                            cmbDirektVerkPeriode.Items.Add("P" + i.ToString());
                        }
                        cmbDirektVerkPeriode.SelectedItem = cmbDirektVerkPeriode.Items[0];

                        Speedometer.UserControl1 produktivitaet = new Speedometer.UserControl1(Convert.ToInt32(App.db.produktivitaet * 0.9));
                        gridProdukt.Children.Add(produktivitaet);

                        Speedometer.UserControl1 liefertreue = new Speedometer.UserControl1(Convert.ToInt32(App.db.liefertreue * 0.9));
                        gridLiefertr.Children.Add(liefertreue);

                        Speedometer.UserControl1 auslastung = new Speedometer.UserControl1(Convert.ToInt32(App.db.umsatzrendite * 0.9));
                        gridAuslastung.Children.Add(auslastung);

                        tabItLager.IsEnabled = true;
                    }
                    catch(Exception)
                    {
                       MessageBox.Show(FindResource("XmlAusg").ToString(), FindResource("Fehler").ToString(), MessageBoxButton.OK, MessageBoxImage.Stop);
                    }
                }
                else
                {
                    MessageBox.Show(FindResource("XmlNV").ToString(), FindResource("Fehler").ToString(), MessageBoxButton.OK, MessageBoxImage.Stop);
                }
            }
            
            Console.WriteLine(openFileDialog1.FileName);
        }

        // Ereignishandler
        static void ValidationCallback(object sender, ValidationEventArgs e)
        {
            throw e.Exception;
        }




        private void xmlExportieren_Click(object sender, System.EventArgs e)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.Title = FindResource("XmlOutp").ToString();
            saveFileDialog.Filter = "XML|*.xml";
            if((bool) saveFileDialog.ShowDialog())
            OutputXml.generateOutputXml(saveFileDialog.FileName);
        }

        private void beenden_Click(object sender, System.EventArgs e)
        {    
            
                   this.Close();
        }

        void loadTreeview()
        {
            //TreeViewItem it = (TreeViewItem) treeView1.Items[0];
            //TreeViewItem itnew = new TreeViewItem();
            //itnew.Header="Test2";
            //it.Items.Add(itnew);
        }

        private void cmbAnsichtChange(object sender, SelectionChangedEventArgs e)
        {
            ComboBoxItem itAuswahl = (ComboBoxItem)cmbProduktAuswahl.SelectedItem;
            ComboBoxItem itAbfrage = (ComboBoxItem)cmbAbfrage.SelectedItem;
            ComboBoxItem itAnsicht = (ComboBoxItem)cmbAnsicht.SelectedItem;
            tvStueckliste.Visibility = System.Windows.Visibility.Hidden;
            List<Bestellung> aktZugang = Xpath_Zugriff.getLstBestellungAktuellerLagerzugang();
            string resLagerzugang = (string)FindResource("Lagerzugang");
            label28.Visibility = System.Windows.Visibility.Hidden;
            label29.Visibility = System.Windows.Visibility.Hidden;
            try
            {
                if (itAuswahl.Content.ToString() == "" || itAbfrage.Content.ToString() == "" || itAnsicht.Content.ToString() == "")
                {
                    return;
                }

            }
            catch (NullReferenceException n)
            {

            }
            try{
            if (itAbfrage.Content.ToString() == resLagerzugang)
            {
                List<Bestellposition> lstbps = new List<Bestellposition>();
                cmbProduktAuswahl.SelectedIndex = -1;
                cmbProduktAuswahl.IsEnabled = false;
                cmbAnsicht.SelectedIndex = 0;
                cmbAnsicht.IsEnabled = false;
                foreach (Bestellung b in aktZugang) {
                    foreach (Bestellposition bps in b.Bestellpositionen) {
                        lstbps.Add(bps);
                    }
                }

                dgAnzeige.ItemsSource =  (from bp in lstbps
                                              select new
                                                {
                                                    Id = bp.IdBestellung,
                                                    Modus = bp.Modus,
                                                    Lieferperiode= bp.LieferPeriode,
                                                    TeilNr = bp.TeileNr,
                                                    Menge = bp.Menge,
                                                    Positionskosten = string.Format("{0:n}", bp.Positionskosten)

                                                }).ToList(); 

                foreach (DataGridColumn dgc in dgAnzeige.Columns)
                {
                    string dgcHeader = (string) dgc.Header;

                    if (dgcHeader=="Kosten")
                    {
                        dgc.Width = 128;
                    }
                    else 
                    {
                        dgc.Width = 78;
                    }

                    if (dgcHeader == "Teil")
                    {
                        dgc.Visibility = System.Windows.Visibility.Hidden;
                    }

                    if (dgcHeader == "DeliveryPeriod") 
                    {
                        dgc.Width = 90;
                    }
                    if (dgcHeader == "IdComponent")
                    {
                        dgc.Width = 75;
                    }
                    if (dgcHeader == "LieferPeriode")
                    {
                        dgc.Width = 80;
                    }
                    if (dgcHeader == "IdOrder")
                    {
                        dgc.Width = 60;
                    }
                }

                dgAnzeige.Columns[0].Header = FindResource("IdBestellung").ToString();
                dgAnzeige.Columns[1].Header = FindResource("Modus").ToString();
                dgAnzeige.Columns[2].Header = FindResource("LieferPeriode").ToString();
                dgAnzeige.Columns[3].Header = FindResource("TeilNr").ToString();
                dgAnzeige.Columns[4].Header = FindResource("Menge").ToString();
                dgAnzeige.Columns[5].Header = FindResource("Positionskosten").ToString();

                foreach (DataGridColumn dgc in dgAnzeige.Columns) {
                    if (dgc.Header.ToString() == "delivery period") {
                        dgc.Width = 95;
                    }
                    else if (dgc.Header.ToString() == "Id" || dgc.Header.ToString() == "Modus")
                    {
                        dgc.Width = 55;
                    }
                    else if (dgc.Header.ToString() == "IdComponent")
                    {
                        dgc.Width = 92;
                    }
                }
                cmbAnsicht.IsEnabled = false;
                cmbProduktAuswahl.IsEnabled = false;
                dgMenge.Visibility = System.Windows.Visibility.Hidden;
                dgAnzeige.Visibility = System.Windows.Visibility.Visible;
            }
           
            else
            {
                cmbProduktAuswahl.IsEnabled = true;
                cmbAnsicht.IsEnabled = true;
               try
                 {

                string valAuswahl = itAuswahl.Content.ToString();
                string valAbfrage = itAbfrage.Content.ToString();
                string valAnsicht = itAnsicht.Content.ToString();

                string teileNr = "TeilNr";
                string bez = "Bezeichnung";
                string lagermenge = "Lagermenge";
                string gleichteil = "Gleichteil";

                string resAbfrageAktLB = (string)FindResource("Aktueller_Lagerbestand");
                string resMÜ = (string)FindResource("Mengenuebersichtsstueckliste");
                string resStueckL = (string)FindResource("Stueckliste");
                string resAlle = (string)FindResource("Alle");
                int nrProd;
                List<Teil> teileLager;
                
                if (valAuswahl == "P1" && valAbfrage == resAbfrageAktLB && valAnsicht == resMÜ)
                {

                    nrProd = 0;
                    teileLager = GUI_LOAD.getAktuellerLagerbestand(App.alleProdukteMitStammUndBewegung[0], nrProd);
                    dgAnzeige.ItemsSource = teileLager;
                    dgAnzeige.Visibility = System.Windows.Visibility.Visible;
                    dgMenge.Visibility = System.Windows.Visibility.Hidden;
                    resizeColumnWidthLager2();
                }

                else if (valAuswahl == "P2" && valAbfrage == resAbfrageAktLB && valAnsicht == resMÜ)
                {
                    nrProd = 1;
                    teileLager = GUI_LOAD.getAktuellerLagerbestand(App.alleProdukteMitStammUndBewegung[1], nrProd);
                    dgAnzeige.ItemsSource = teileLager;
                    dgAnzeige.Visibility = System.Windows.Visibility.Visible;
                    dgMenge.Visibility = System.Windows.Visibility.Hidden;
                    resizeColumnWidthLager2();
                }
                else if (valAuswahl == "P3" && valAbfrage == resAbfrageAktLB && valAnsicht == resMÜ)
                {
                    nrProd = 2;
                    teileLager = GUI_LOAD.getAktuellerLagerbestand(App.alleProdukteMitStammUndBewegung[2], nrProd);
                    dgAnzeige.ItemsSource = teileLager;
                    dgAnzeige.Visibility = System.Windows.Visibility.Visible;
                    dgMenge.Visibility = System.Windows.Visibility.Hidden;
                    resizeColumnWidthLager2();
                }
                else if (valAuswahl == resAlle && valAbfrage == resAbfrageAktLB && valAnsicht == resMÜ)
                {
                    nrProd = 3;
                    teileLager = GUI_LOAD.getAktuellerLagerbestandAlleProdukte(App.alleProdukteMitStammUndBewegung);
                    dgAnzeige.ItemsSource = teileLager;
                    dgAnzeige.Visibility = System.Windows.Visibility.Visible;
                    dgMenge.Visibility = System.Windows.Visibility.Hidden;
                    resizeColumnWidthLager2();
                }

                else if (valAuswahl == "P1" && valAbfrage == resAbfrageAktLB && valAnsicht == resStueckL)
                {
                    label28.Visibility = System.Windows.Visibility.Visible;
                    label29.Visibility = System.Windows.Visibility.Visible;

                    tvStueckliste.Items.Clear();
                    tvStueckliste.Items.Add(App.stuecklisteAlsBaumP1);
                    TreeViewItem root = (TreeViewItem)tvStueckliste.Items[0];
                    ExpandAllNodes(root);

                    dgMenge.ItemsSource = App.lstTeileP1;
                    List<int> test = new List<int>();

                    for (int i = 0; i < 49; i++)
                    {

                        test.Add(App.lstTeileP1[i].Lagermenge);
                    }
                    dgMenge.ItemsSource = test;
                    tvStueckliste.Visibility = System.Windows.Visibility.Visible;
                    dgAnzeige.Visibility = System.Windows.Visibility.Hidden;
                    dgMenge.Visibility = System.Windows.Visibility.Visible;
                    return;
                }
                else if (valAuswahl == "P2" && valAbfrage == resAbfrageAktLB && valAnsicht == resStueckL)
                {
                    label28.Visibility = System.Windows.Visibility.Visible;
                    label29.Visibility = System.Windows.Visibility.Visible;
                    tvStueckliste.Items.Clear();
                    tvStueckliste.Items.Add(App.stuecklisteAlsBaumP2);
                    TreeViewItem root = (TreeViewItem)tvStueckliste.Items[0];
                    ExpandAllNodes(root);
                    dgMenge.ItemsSource = App.stuecklisteAlsBaumMengeP2;
                    tvStueckliste.Visibility = System.Windows.Visibility.Visible;
                    dgAnzeige.Visibility = System.Windows.Visibility.Hidden;
                    dgMenge.Visibility = System.Windows.Visibility.Visible;
                    return;
                }
                else if (valAuswahl == "P3" && valAbfrage == resAbfrageAktLB && valAnsicht == resStueckL)
                {
                    label28.Visibility = System.Windows.Visibility.Visible;
                    label29.Visibility = System.Windows.Visibility.Visible;
                    tvStueckliste.Items.Clear();
                    tvStueckliste.Items.Add(App.stuecklisteAlsBaumP3);
                    TreeViewItem root = (TreeViewItem)tvStueckliste.Items[0];
                    ExpandAllNodes(root);
                    dgMenge.ItemsSource = App.stuecklisteAlsBaumMengeP3;
                    tvStueckliste.Visibility = System.Windows.Visibility.Visible;
                    dgAnzeige.Visibility = System.Windows.Visibility.Hidden;
                    dgMenge.Visibility = System.Windows.Visibility.Visible;
                    return;
                }

                else if (valAuswahl == resAlle && valAbfrage == resAbfrageAktLB && valAnsicht == resStueckL)
                {
                    label28.Visibility = System.Windows.Visibility.Visible;
                    label29.Visibility = System.Windows.Visibility.Visible;
                    dgAnzeige.Visibility = System.Windows.Visibility.Hidden;
                    dgMenge.Visibility = System.Windows.Visibility.Hidden;
                    MessageBox.Show((string)FindResource("ErrLager"));
                    cmbProduktAuswahl.SelectedIndex = 1;
                    tvStueckliste.Items.Clear();
                    tvStueckliste.Items.Add(App.stuecklisteAlsBaumP1);
                    TreeViewItem root = (TreeViewItem)tvStueckliste.Items[0];
                    ExpandAllNodes(root);

                    dgMenge.ItemsSource = App.lstTeileP1;
                    List<int> test = new List<int>();

                    for (int i = 0; i < 49; i++)
                    {

                        test.Add(App.lstTeileP1[i].Lagermenge);
                    }
                    dgMenge.ItemsSource = test;
                    tvStueckliste.Visibility = System.Windows.Visibility.Visible;
                    dgAnzeige.Visibility = System.Windows.Visibility.Hidden;
                    dgMenge.Visibility = System.Windows.Visibility.Visible;
                    return;
                }
                int j = 0;

                foreach (DataGridColumn dgc in dgAnzeige.Columns)
                {
                    

                    string dgcHeader = (string)dgc.Header;
                    if (dgcHeader !="TeilNr" && dgcHeader != "Bezeichnung" && dgcHeader != "Lagermenge" && dgcHeader != "Gleichteil")
                    {
                        dgc.Visibility = System.Windows.Visibility.Hidden;
                    }
                    else
                    {

                        if (dgcHeader == teileNr)
                        {
                            dgc.Header = FindResource("TeilNr"); 
                        }
                        else if (dgcHeader == bez)
                        {
                            dgc.Header = FindResource("Bezeichnung");  
                        }
                        else if (dgcHeader == lagermenge)
                        {
                            dgc.Header = FindResource("Lagermenge"); 
                        }
                        else if (dgcHeader == gleichteil)
                        {
                            dgc.Header = FindResource("Gleichteil"); 
                        }
                    }
                }
               }
               catch (NullReferenceException n)
               {

               }

              }
                 }
            catch(Exception){}

        }

        private void ExpandAllNodes(TreeViewItem rootItem)
        {
            foreach (object item in rootItem.Items)
            {
                TreeViewItem treeItem = (TreeViewItem)item;

                if (treeItem != null)
                {
                    ExpandAllNodes(treeItem);
                    treeItem.IsExpanded = true;
                }
            }
        }

        private void dgMenge_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {

        }

        private void sV_ScrollChanged(object sender, ScrollChangedEventArgs e)
        {
            Border scroll_border = VisualTreeHelper.GetChild(tvStueckliste, 0) as Border;
            Border scroll_border2 = VisualTreeHelper.GetChild(dgMenge, 0) as Border;

            if (e.VerticalChange != 0)
            {
                if (scroll_border is Border)
                {
                    ScrollViewer scrollTree = scroll_border.Child as ScrollViewer;
                    ScrollViewer scrollDG = scroll_border2.Child as ScrollViewer;
                    scrollDG.ScrollToVerticalOffset(scrollTree.VerticalOffset);
                }
            }
        }

        private void MenuItemLanguage_Click(object sender, RoutedEventArgs e)
        {
            // Uncheck each item
            foreach (MenuItem item in menuItemLanguages.Items)
            {
                item.IsChecked = false;
            }

            MenuItem mi = sender as MenuItem;
            mi.IsChecked = true;
            App.Instance.SwitchLanguage(mi.Tag.ToString());
            setTitle();
            try
            {
                dtGridZeit.Columns[0].Header = FindResource("ArbeitsplatzNr").ToString();
                dtGridZeit.Columns[1].Header = FindResource("Fertigungszeit").ToString();
                dtGridZeit.Columns[2].Header = FindResource("Ruestzeit").ToString();
                dtGridZeit.Columns[3].Header = FindResource("Schicht").ToString();
                dtGridZeit.Columns[4].Header = FindResource("Ueberminuten").ToString();
                dtGridZeit.Columns[5].Header = FindResource("Gesamt").ToString();
            }
            catch (Exception)
            {
                
            }
            try
            {
                dgBestellung.Columns[0].Header = FindResource("IdBestellung").ToString();
                dgBestellung.Columns[2].Header = FindResource("BestellArt").ToString();
                dgBestellung.Columns[3].Header = FindResource("LieferPeriode").ToString();
                dgBestellung.Columns[4].Header = FindResource("TeileNr").ToString();
                dgBestellung.Columns[6].Header = FindResource("Menge").ToString();
                dgBestellung.Columns[7].Header = FindResource("Positionskosten").ToString();
                double sum = App.lstBestellungen.Gesamtkosten;
                label23.Content = sum.ToString("C", CultureInfo.CurrentCulture);
            }
            catch (Exception)
            {

            }
            try
            {
                dgAnzeige.Columns[0].Header = FindResource("IdBestellung").ToString();
                dgAnzeige.Columns[1].Header = FindResource("Modus").ToString();
                dgAnzeige.Columns[2].Header = FindResource("LieferPeriode").ToString();
                dgAnzeige.Columns[3].Header = FindResource("TeilNr").ToString();
                dgAnzeige.Columns[4].Header = FindResource("Menge").ToString();
                dgAnzeige.Columns[5].Header = FindResource("Positionskosten").ToString();

                resizeColumnWidthLager();
            }
            catch (Exception ex) { }

            try
            {
                dgProdmenge.Columns[0].Header = FindResource("ProdauftragsNr").ToString();
                dgProdmenge.Columns[1].Header = FindResource("TeilNr").ToString();
                dgProdmenge.Columns[2].Header = FindResource("TeilBezeichnung").ToString();
                dgProdmenge.Columns[3].Header = FindResource("Bedarf").ToString();
                dgProdmenge.Columns[4].Header = FindResource("Priorität").ToString();
            }
            catch (Exception)
            {

            }
            try
            {
                dgAnzeige.Columns[7].Header = FindResource("TeilNr").ToString();
                dgAnzeige.Columns[8].Header = FindResource("Bezeichnung").ToString();
                dgAnzeige.Columns[9].Header = FindResource("Sicherheitsbestand").ToString();
                dgAnzeige.Columns[11].Header = FindResource("Lagermenge").ToString();
                dgAnzeige.Columns[24].Header = FindResource("Gleichteil").ToString();
                resizeColumnWidthLager2();
               // resizeColumnWidthLager();
            }
            catch (Exception ex) { }
            try
            {
                //App.cu.loadUmsatzChart(chartUmsatz);
            }
            catch (Exception ex) { }
        }

        private void tabBest_Selected(object sender, RoutedEventArgs e)
        {
            double sum = App.lstBestellungen.Gesamtkosten;

            dgBestellung.ItemsSource = App.lstBestellungen.Bestellpositionen;

            foreach (DataGridColumn dgc in dgBestellung.Columns)
            {
                string test = dgc.Header.ToString();

                if (dgc.Header.ToString() == "Teil")
                {
                    dgc.Visibility = System.Windows.Visibility.Hidden;
                }
                
            }
            
            if (App.lstBestellungen.Bestellpositionen.Count * 19 <= 400)
            {
                dgBestellung.Height = App.lstBestellungen.Bestellpositionen.Count * 19 + 25;
                label23.Margin = new Thickness(635, App.lstBestellungen.Bestellpositionen.Count * 19 + 100, 200, 0);
                label22.Margin = new Thickness(240, App.lstBestellungen.Bestellpositionen.Count * 19 + 100, 0, 0);
            }
            else {
                dgBestellung.Height = 400;
                label23.Margin = new Thickness(635, 497, 200, 0);
                label22.Margin = new Thickness(240, 497, 0, 0);
            }
            label23.Content = sum.ToString("C", CultureInfo.CurrentCulture);

        }

        private void dbBestellung_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
        {
            if (e.Column.Header.ToString() == "Teil" || e.Column.Header.ToString() == "Modus")
                e.Column.Visibility = System.Windows.Visibility.Hidden;

            if (e.Column.Header.ToString() == "IdBestellung")
            {
                e.Column.Header = FindResource("IdBestellung").ToString();
            }
            if (e.Column.Header.ToString() == "BestellArt")
            {
                e.Column.Header = FindResource("BestellArt").ToString();
                e.Column.Width = 80;
            }
            if (e.Column.Header.ToString() == "LieferPeriode")
            {
                e.Column.Header = FindResource("LieferPeriode").ToString();
                e.Column.Width = 100;
            }
            if (e.Column.Header.ToString() == "TeileNr")
            {
                e.Column.Header = FindResource("TeileNr").ToString();
                e.Column.Width = 70;
            }
            if (e.Column.Header.ToString() == "Menge")
            {
                e.Column.Header = FindResource("Menge").ToString();
                e.Column.Width = 70;
            }
            if (e.Column.Header.ToString() == "Positionskosten")
            {
                e.Column.Header = FindResource("Positionskosten").ToString();
                e.Column.Width = 200;
            }
        }

        private void dtGridZeit_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
        {
            try
            {
                dtGridZeit.Columns[0].Header = FindResource("ArbeitsplatzNr").ToString();
                dtGridZeit.Columns[1].Header = FindResource("Fertigungszeit").ToString();
                dtGridZeit.Columns[2].Header = FindResource("Ruestzeit").ToString();
                dtGridZeit.Columns[3].Header = FindResource("Schicht").ToString();
                dtGridZeit.Columns[4].Header = FindResource("Ueberminuten").ToString();
                dtGridZeit.Columns[5].Header = FindResource("Gesamt").ToString();
            }
            catch (Exception)
            {

            }
        }

        private void genReport(String pFilename)
        {
            //Control chart =(Control) gridChart.Children[0];
            //Control liefer = (Control)gridLiefertr.Children[0];
            //Control prod = (Control)gridProdukt.Children[0];

            //string Pfad = @"C:\Users\Default\Documents\ppsBike";
            //DirectoryInfo di = Directory.CreateDirectory(Pfad);

            
            //IbsysII.Domain.ChartUmsatz.ExportReport.saveImageOfControl(chart, Pfad + @"\chart.png");
            //IbsysII.Domain.ChartUmsatz.ExportReport.saveImageOfControl(liefer, Pfad+@"\liefer.png");
            //IbsysII.Domain.ChartUmsatz.ExportReport.saveImageOfControl(prod,Pfad+ @"\prod.png")

            lblReportDatum.Visibility = System.Windows.Visibility.Visible;
            lblReportSeite.Visibility = System.Windows.Visibility.Visible;
            lblReportErsteller.Visibility = System.Windows.Visibility.Visible;

            Grid source =(Grid) gridDashboard;

            RenderTargetBitmap bmp = new RenderTargetBitmap(1280, 800, 128, 128, PixelFormats.Pbgra32);
           
            bmp.Render(source);
  
            Clipboard.SetImage(bmp);
            var image = Clipboard.GetImage();

            using (var fileStream = new FileStream(@pFilename + ".jpg" , FileMode.Create))
            {
                BitmapEncoder encoder = new PngBitmapEncoder();
                encoder.Frames.Add(BitmapFrame.Create(image));
                encoder.Save(fileStream);
                fileStream.Close();
            }
            FileStream test = new FileStream(@pFilename + ".jpg",FileMode.Open);
            BitmapDecoder decoder = BitmapDecoder.Create(test, BitmapCreateOptions.None, BitmapCacheOption.None);
            BitmapSource bitmapSource = decoder.Frames[0];
            CroppedBitmap croppedBitmap = new CroppedBitmap(bitmapSource,
               new Int32Rect(20, 0, (int)bitmapSource.Width - 20, (int)bitmapSource.Height));

            using (var fileStream = new FileStream(@pFilename + "1.jpg", FileMode.Create))
            {
                BitmapEncoder encoder = new PngBitmapEncoder();
                encoder.Frames.Add(BitmapFrame.Create(croppedBitmap));
                encoder.Save(fileStream);
                fileStream.Close();
            }
            test.Close();
            Document document = new Document();
            document.SetPageSize(iTextSharp.text.PageSize.A4.Rotate());
            using (var stream = new FileStream(@pFilename + ".pdf", FileMode.Create, FileAccess.Write, FileShare.None))
            {
                PdfWriter.GetInstance(document, stream);
                document.Open();
                using (var imageStream = new FileStream(@pFilename + "1.jpg", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                {
                    var image1 = iTextSharp.text.Image.GetInstance(imageStream);
                    image1.ScalePercent(60);
                    image1.Border = 1;
                    document.Add(image1);
                    imageStream.Close();
                }
                
                document.Close();
            }
           
        }

     
        private void tabDash_Selected(object sender, RoutedEventArgs e)
        {
             
            ChartUmsatz cu = new ChartUmsatz();
            //cu.loadUmsatzChart(chartUmsatz);
           // App.cu.loadUmsatzChart(chartUmsatz);
        }

        private void cmbAbfrageProd_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            ComboBoxItem it = (ComboBoxItem)cmbAbfrageProd.SelectedValue;

            if (it.Content.ToString() == FindResource("Produktionsmenge").ToString())
            {
                List<Produktionsauftrag> tmpProdList = new List<Produktionsauftrag>();
                try
                {
                    lblKapa.Content = FindResource("Produktionsmenge");
                    foreach (Produktionsauftrag p in App.lstProgP1)
                    {
                        tmpProdList.Add(p);

                    }
                    foreach (Produktionsauftrag p in App.lstProgP2)
                    {
                        tmpProdList.Add(p);

                    }
                    foreach (Produktionsauftrag p in App.lstProgP3)
                    {
                        tmpProdList.Add(p);
                    }
                }
                catch (NullReferenceException ne)
                {
                    MessageBoxResult result = MessageBox.Show(this, "Bitte befüllen Sie die Verkaufsaufträge mit Werten in der Vertriebsverwaltung, ohne Verkaufsaufträge können keine Produktionsaufträge errechnet werden",
                    "Fehlende Input Daten", MessageBoxButton.OKCancel, MessageBoxImage.Error);
                }

                dgProdmenge.ItemsSource = (from p in tmpProdList
                                              where p.Teil.Teileart.CompareTo('P') == 0 || p.Teil.Teileart.CompareTo('E') == 0
                                              select new
                                              {
                                                  ProdauftragsNr = p.ProdAufNr,
                                                  TeilNr = p.Teil.TeilNr,
                                                  TeilBezeichnung = p.Teil.Bezeichnung,
                                                  Bedarf = p.Teil.Bedarf,
                                                  Priorität = p.Prio,

                                              }).ToList();

                foreach (DataGridColumn dgc in dgProdmenge.Columns)
                {
                    dgc.Width = 95;
                }

                if (dgProdmenge.Items.Count * 19 <= 400)
                {
                    dgProdmenge.Height = dgProdmenge.Items.Count * 19 + 25;
                }
                else
                {
                    dgProdmenge.Height = 400;
                }

                dgProdmenge.Visibility = System.Windows.Visibility.Visible;
                dtGridZeit.Visibility = System.Windows.Visibility.Hidden;
            }

            else
            {
                lblKapa.Content = FindResource("Produktionszeiten");
                dgProdmenge.Visibility = System.Windows.Visibility.Hidden;
                List<Zeitverwaltung.ZeitverwaltungUtil> lst = new List<Zeitverwaltung.ZeitverwaltungUtil>();
                foreach (var t in Zeitverwaltung.dicZeitverwaltung) {
                    Zeitverwaltung.ZeitverwaltungUtil zu = t.Value;
                    lst.Add(zu);                   
                }
               
                dtGridZeit.ItemsSource = lst;

                foreach (DataGridColumn dgc in dtGridZeit.Columns)
                {
                    if (dgc.Header.ToString() == "Gesamt")
                    {
                        dgc.Width = 90;
                        dtGridZeit.Columns[5].Header = FindResource("Gesamt").ToString();
                    }
                }

                if (dtGridZeit.Items.Count * 19 <= 400)
                {
                    dtGridZeit.Height = dtGridZeit.Items.Count * 19 + 25;
                }
                else {
                    dtGridZeit.Height = 400;
                }
                dtGridZeit.Visibility = System.Windows.Visibility.Visible;
            }
            try
            {
                dgProdmenge.Columns[0].Header = FindResource("ProdauftragsNr").ToString();
                dgProdmenge.Columns[1].Header = FindResource("TeilNr").ToString();
                dgProdmenge.Columns[2].Header = FindResource("TeilBezeichnung").ToString();
                dgProdmenge.Columns[3].Header = FindResource("Bedarf").ToString();
                dgProdmenge.Columns[4].Header = FindResource("Priorität").ToString();
            }
            catch (Exception)
            {

            }
            

        }

        private void ExportReport_Click(object sender, RoutedEventArgs e)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();
            saveFileDialog.Title = "Bitte speichern Sie den zu exportierenden Report";
            //saveFileDialog.Filter = "JPEG|*.jpg";
            if((bool)saveFileDialog.ShowDialog())
            genReport(saveFileDialog.FileName);

            lblReportDatum.Visibility = System.Windows.Visibility.Hidden;
            lblReportSeite.Visibility = System.Windows.Visibility.Hidden;
            lblReportErsteller.Visibility = System.Windows.Visibility.Hidden;

            File.Delete(saveFileDialog.FileName + ".jpg");
            File.Delete(saveFileDialog.FileName + "1.jpg");
          }

        private void textBox_LostFocus(object sender, RoutedEventArgs e)
        {
            TextBox box = (TextBox)sender;
            string value = box.Text;
            if (value != "")
            {
                bool isNum;
                if (value.Contains(","))
                {
                    value = value.Replace(",", ".");
                    box.Text = value;
                }
                box.BorderThickness = new Thickness(2);
                Int32 retNum;
                isNum = Int32.TryParse(Convert.ToString(value), System.Globalization.NumberStyles.Any, System.Globalization.NumberFormatInfo.InvariantInfo, out retNum);
                if (!isNum || retNum < 0)
                {
                    box.BorderBrush = System.Windows.Media.Brushes.Red;                    
                }
                else
                {
                    box.BorderBrush = System.Windows.Media.Brushes.Green;
                }
            };
        }

        private void resizeColumnWidthLager(){

            foreach (DataGridColumn dgc in dgAnzeige.Columns)
            {
                string dgcHeader = (string)dgc.Header;

                if (dgcHeader == "Kosten")
                {
                    dgc.Width = 128;
                }
                else
                {
                    dgc.Width = 78;
                }

                if (dgcHeader == "Teil")
                {
                    dgc.Visibility = System.Windows.Visibility.Hidden;
                }

                if (dgcHeader == "DeliveryPeriod")
                {
                    dgc.Width = 90;
                }
                if (dgcHeader == "IdComponent")
                {
                    dgc.Width = 85;
                }
                if (dgcHeader == "LieferPeriode")
                {
                    dgc.Width = 80;
                }
                if (dgcHeader == "IdOrder")
                {
                    dgc.Width = 60;
                }
                if (dgcHeader == "IdBestellung")
                {
                    dgc.Width = 75;
                }

                if (dgcHeader == "Modus")
                {
                    dgc.Width = 60;
                }
                if (dgcHeader == "TeilNr")
                {
                    dgc.Width = 60;
                }
                if (dgcHeader == "Positionskosten")
                {
                    dgc.Width = 100;
                }
                if (dgcHeader == "Costs")
                {
                    dgc.Width = 105;
                }
            }
        }

        private void resizeColumnWidthLager2()
        {

            foreach (DataGridColumn dgc in dgAnzeige.Columns)
            {
                string dgcHeader = (string)dgc.Header;

                dgc.Width = 110;
            }
        }

        private void MenuItem_Hilfe_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                string pfadPdfDatei = System.IO.Path.Combine(Environment.CurrentDirectory, @"Daten\Handbuch.pdf");

                if (pfadPdfDatei.Contains(@"\bin\Debug"))
                {
                    pfadPdfDatei = pfadPdfDatei.Replace(@"\bin\Debug", "");
                }
                System.Diagnostics.Process.Start(pfadPdfDatei);
            }
            catch
            {

            }
        }
        protected override void  OnClosing(System.ComponentModel.CancelEventArgs e)
        {
            MessageBoxResult result = MessageBox.Show(FindResource("WirklichBeenden").ToString(), FindResource("Hinweis").ToString(),
                                 MessageBoxButton.YesNo,
                                 MessageBoxImage.Question);

            if (result == MessageBoxResult.No)
            {
                e.Cancel = true;
            }
            else if (result == MessageBoxResult.Yes)
            {
                MessageBoxResult result2 = MessageBox.Show(FindResource("DatenVerloren").ToString(), FindResource("Hinweis").ToString(),
                                 MessageBoxButton.OKCancel,
                                 MessageBoxImage.Exclamation);

                if (result2 == MessageBoxResult.Cancel)
                {
                    e.Cancel = true;
                }
                else if (result2 == MessageBoxResult.OK)
                {
                    
                }
            }
            
        }
    }
}


